// bmp.h

#ifndef BMP_H
#define BMP_H

#include <stdint.h>

//
/**
 * @brief 初始化 framebuffer，调用一次即可
 * @return 0 成功；-1 失败
 */
int bmp_init(void);

/**
 * @brief 在指定位置以指定宽高绘制 BMP 图像
 * @param path   BMP 文件路径
 * @param x      左上角 X 坐标
 * @param y      左上角 Y 坐标
 * @param width  绘制宽度
 * @param height 绘制高度
 */
void draw_bitmap(const char *path, int x, int y, int width, int height);

/**
 * @brief 使用指定颜色填充屏幕或区域
 * @param color  颜色值，格式 0xRRGGBB
 * @param start_x 开始绘制的 X 坐标
 * @param start_y 始绘制的 Y 坐标
 * @param width  要填充的宽度
 * @param height 要填充的高度
 */
void fill_color(uint32_t color, int start_x, int start_y, int width, int height);

/**
 * @brief 在指定区域绘制一个空心矩形边框
 * @param x         左上角 X 坐标
 * @param y         左上角 Y 坐标
 * @param width     边框区域的宽度
 * @param height    边框区域的高度
 * @param color     边框颜色，格式 0xRRGGBB
 * @param thickness 边框线条厚度（单位：像素）
 */
void draw_border(int x, int y, int width, int height, uint32_t color, int thickness);

/**
 * @brief 在指定区域绘制一个虚线矩形边框
 *
 * 类似选中框效果，适用于高亮显示。支持颜色、线宽、间隔设置。
 *
 * @param x         左上角 X 坐标
 * @param y         左上角 Y 坐标
 * @param width     区域宽度
 * @param height    区域高度
 * @param color     边框颜色（0xRRGGBB 格式）
 * @param thickness 边框线条厚度（像素）
 * @param dash_len  每段实线长度（像素）
 * @param gap_len   每段间隔长度（像素）
 */
void draw_dashed_border(int x, int y, int width, int height, uint32_t color, int thickness, int dash_len, int gap_len);

uint32_t convert_rgb(uint32_t color);

#endif /* BMP_H */
